package org.ysu.shoeShopping.service;

import org.ysu.shoeShopping.dto.CartItem;
import org.ysu.shoeShopping.entity.Cart;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import java.util.List;

/**
 * 购物车(Cart)表服务接口
 *
 * @author makejava
 * @since 2025-09-21 15:21:54
 */
public interface CartService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Cart queryById(Integer id);

    /**
     * 分页查询
     *
     * @param cart 筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     */
    Page<Cart> queryByPage(Cart cart, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param cart 实例对象
     * @return 实例对象
     */
    Cart insert(Cart cart);

    /**
     * 修改数据
     *
     * @param cart 实例对象
     * @return 实例对象
     */
    Cart update(Cart cart);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 根据用户ID获取购物车商品列表
     *
     * @param userId 用户ID
     * @return 购物车商品列表
     */
    List<CartItem> getCartItems(Integer userId);

    /**
     * 添加商品到购物车
     *
     * @param userId 用户ID
     * @param sid 商品ID
     * @param sizeid 尺码ID
     * @param quantity 数量
     * @return 是否成功
     */
    boolean addToCart(Integer userId, Integer sid, Integer sizeid, Integer quantity);

    /**
     * 更新购物车商品数量
     *
     * @param cartId 购物车ID
     * @param quantity 新数量
     * @return 是否成功
     */
    boolean updateCartQuantity(Integer cartId, Integer quantity);

    /**
     * 从购物车移除商品
     *
     * @param cartId 购物车ID
     * @return 是否成功
     */
    boolean removeFromCart(Integer cartId);

    /**
     * 清空用户购物车
     *
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean clearCart(Integer userId);
}